package com.doit.day02;

import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;

/**
 * 创建一个表：需要一个表的描述器
 * 表的描述器==》表的描述器构造器
 * 表需要设置列族==》表的描述器的构造器里面设置设置列族==》集合，放得是列族的描述器
 * 列族的描述器=>列族描述器的构造器==》在里面设置具体的列族名称
 * 列族描述器的构造器=》得到列族描述器
 * 表的描述器构造器==》表的描述器
 * 创建一个表
 */

public class _06_创建一张表 {
    public static void main(String[] args) throws IOException {
        Connection conn = HbaseUtil.getConn();
        Admin admin = conn.getAdmin();

        //表的描述器的构造器
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("doit:table_name1"));

        //要一个集合，集合里面放得是列簇的描述
        ArrayList<ColumnFamilyDescriptor> list = new ArrayList<>();

        //列族描述器的构造器
        ColumnFamilyDescriptorBuilder f1B = ColumnFamilyDescriptorBuilder.newBuilder("f1".getBytes(StandardCharsets.UTF_8));
        ColumnFamilyDescriptorBuilder f2B = ColumnFamilyDescriptorBuilder.newBuilder("f2".getBytes(StandardCharsets.UTF_8));
        ColumnFamilyDescriptorBuilder f3B = ColumnFamilyDescriptorBuilder.newBuilder("f3".getBytes(StandardCharsets.UTF_8));

        //构建列族描述器
        ColumnFamilyDescriptor f1 = f1B.build();
        ColumnFamilyDescriptor f2 = f2B.build();
        ColumnFamilyDescriptor f3 = f3B.build();

        list.add(f1);
        list.add(f2);
        list.add(f3);
        //创建表要给列簇
        TableDescriptorBuilder tableDescriptorBuilder1 = tableDescriptorBuilder.setColumnFamilies(list);

        //用表的描述器的构建器构建一个表的描述器
        TableDescriptor build = tableDescriptorBuilder1.build();

        //创建一张表需要一张表的描述器
        admin.createTable(build);

        admin.close();
    }
}
